package pojo;

import lombok.Data;
import org.springframework.beans.factory.InitializingBean;

/**
 * @Author: fancyears·milos·malvis
 * @Description: 快速用户类
 * @Date: Created in  2019/4/11 13:55
 * @Modified By:
 */
@Data
public class FastUser /*implements InitializingBean*/ {
    private static int order = 0;
    /**
     * 昵称
     */
    protected String nickname;
    /**
     * 用户名
     */
    protected String username;
    /**
     * 密码
     */
    protected String password;

    /**
     * 无参构造方法最先调用
     */
    public FastUser() {
        System.out.println(this.getClass().getCanonicalName()+"这是无参的构造方法,order=" + order++);
    }

    /**
     * 初始化后的执行方法，很明显，当类被初始化后才调用init-method定义的方法，而不是在初始化前
     * <p>
     * scope="singleton"定义的单例对象，只会执行一次方法，scope="prototype"会执行多次
     */
    public void afterInitialization() {
        System.out.println("初始化之后,order=" + order++);
    }

    /**
     * 销毁前执行的方法
     *
     * 貌似单例模式下的实例对象才会调用这个方法，prototype对象不调用这个方法
     */
    public void beforeDestroy() {
        System.out.println("销毁FastUser");
    }

    private int modCount = 1;

    public int getModCount() {
        return modCount++;
    }

    public void afterPropertiesSet() throws Exception {
        System.out.println("属性set后的回调,order=" + order++);
    }
}
